/**
 * @file 接口集中管理
 * @author Iain
 * @creation 2021/11/06
 */

import Vue from "vue";// 引入配置
import globalConfig from "@/config/index.js";
let vm = new Vue();

const url = {
  test: [
    // 获取 活动详情
    {
      // 重置请求基础地址 如：Oss云存储时使用
      baseUrl: "https://www.baidu.com/api",
      // 请求路由
      url: "userInfo",
      // 关闭 错误统一处理
      errorUnifiedHandling: false,
      // 请求方式 默认 post
      method: "get",
    },
  ],
  goods: [
    // 获取 配送地区
    {
      // 请求路由
      url: "area",
      method: "get",
    },
    // 获取 商品分类
    {
      // 请求路由
      url: "category",
      method: "get",
    },
    // 获取 商品列表
    {
      // 请求路由
      url: "product",
      method: "get",
    },
  ],
  // 用户组
  user: [
    // 提交反馈
    {
      // 重置请求基础地址 如：Oss云存储时使用
      baseUrl: "https://ytg.xuan-niao.com/api/v2",
      url: "feedback",
    },
  ],
};

// api 接口管理
const install = (Vue, vm) => {
  const api = {};
  for (const key in url) {
    api[key] = {};
    url[key].forEach((val) => {
      api[key][val.url] = (data, header = {}) => {
        const config = {
          url: `/${key}/${val.url}`,
          method: val.method || "POST",
          data: data || {},
          header,
        };
        // 如果自带请求地址 则使用自带的地址
        if (val.baseUrl) {
          vm.$u.http.setConfig((config) => {
              config.baseURL =  val.baseUrl
              return config
          })
        }else {
          vm.$u.http.setConfig((config) => {
              config.baseURL = globalConfig.baseUrl
              return config
          })
        }

        // 如果错误统一处理有配置 则使用配置的值 否则默认为 true
        if (typeof val.errorUnifiedHandling != "undefined") {
          config.errorUnifiedHandling = val.errorUnifiedHandling;
        } else {
          config.errorUnifiedHandling = true;
        }

        return vm.$u.http.request(config);
      };
    });
  }
  Vue.prototype.$api = {
    // // test get api
    // getTest: (params = {}) => vm.$u.get("/http/test", params),
    // // test post api
    // postTest: (params = {}) => vm.$u.post("/http/test", params),
    ...api,
  };
};

export default {
  install,
};
